package com.financing.wap.service.impl;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.financing.wap.dao.IFpOrderPhoDao;
import com.financing.wap.dao.IOrderDao;
import com.financing.wap.dto.FpOrderPhoDTO;
import com.financing.wap.dto.ProductDetailPageDTO;
import com.financing.wap.service.IFpOrderPhoService;
import com.financing.wap.util.DTOdateSetUtil;

@Service("fpOrderPhoServiceImpl")
@Transactional
public class FpOrderPhoServiceImpl  implements IFpOrderPhoService{

	@Autowired
	private IFpOrderPhoDao fpOrderPhoDao;

	@Autowired
	private IOrderDao orderDao;
	
	@Override
	@Transactional(rollbackFor={Exception.class,RuntimeException.class})
	public void addFpOrderPho(List<FpOrderPhoDTO> list,ProductDetailPageDTO productDetailDTO,String oId,String uId) {
		String oType="01";
		//产品类型
		String pType = productDetailDTO.getProductType();
		if("02".equals(pType)){
			 oType="01";
		}else if("03".equals(pType)){
			 oType="02";
		}else if("05".equals(pType)){
			 oType="03";
		}else{
			oType=pType;
		}
		//新增 FpOrderPhoDTO
		for (FpOrderPhoDTO fpd:list) {
			//如果文件地址为空 continue
			if(StringUtils.isBlank(fpd.getoPhoUri())){
				continue;
				}
			fpd.setoId(oId);
			//如果审核通过了就不能做处理
			FpOrderPhoDTO findFpOrderPhoResult = fpOrderPhoDao.findFpOrderPhoResult(fpd);
			if(findFpOrderPhoResult!=null){
				if("03".equals(findFpOrderPhoResult.getoPhoStatus())){
					continue;
					}
				}
			
			//先删除 FpOrderPhoDTO 数据
			FpOrderPhoDTO orderDTO = new FpOrderPhoDTO();
			
			orderDTO.setoType(oType);
			orderDTO.setpType(pType);
			orderDTO.setpId(productDetailDTO.getProductId());
			orderDTO.setoId(oId);
			orderDTO.setoPhoType(fpd.getoPhoType());
			DTOdateSetUtil.setUpdateInfo(orderDTO);
			fpOrderPhoDao.deleteOrderPho(orderDTO);
			
			//初始化参数
			fpd.setoType(oType);
			fpd.setpType(pType);
			fpd.setpId(productDetailDTO.getProductId());
			fpd.setoId(oId);
			fpd.setoPhoStatus("02");
			fpd.setuId(uId.toString());
			DTOdateSetUtil.setUpdateInfo(fpd);
			DTOdateSetUtil.setCreateInfo(fpd);
			fpOrderPhoDao.addFpOrderPho(fpd);
				
		}
	}
	

	@Override
	public FpOrderPhoDTO findFpOrderPhoResult(FpOrderPhoDTO fpd) {
		return fpOrderPhoDao.findFpOrderPhoResult(fpd);
	}
	
	
	@Override
	public Boolean checkFpOrderPhoStatus(FpOrderPhoDTO fpd) {
		List<FpOrderPhoDTO>list=fpOrderPhoDao.checkFpOrderPhoStatus(fpd);
		Boolean flag=false;
		if(list!=null && list.size()>0){
			
			for (int i = 0; i < list.size(); i++) {
				list.get(i).getoPhoStatus();
				if(!"03".equals(list.get(i).getoPhoStatus())){
					return flag=false;
				}else{
					 flag=true;
				}
			}
		}
		return flag;
	}


	@Override
	public List<FpOrderPhoDTO> findALLFpOrderPho(FpOrderPhoDTO fpd) {
		return fpOrderPhoDao.checkFpOrderPhoStatus(fpd);
	}
	

}
